/*
 * Options.java
 * 
 * Created on 2007-okt-25, 21:32:54
 * 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package grex;

import grex.Nodes.Node;

import java.io.Serializable;
import java.util.Hashtable;
import java.util.concurrent.CopyOnWriteArrayList;

/**
 *
 * @author RIK
 */
public class Options implements Serializable {
    private GP gp;
    private CopyOnWriteArrayList<GP> winners;


    private Hashtable<double[], Hashtable<double[], Double>> knnDists = new Hashtable<double[], Hashtable<double[], Double>>();
    public String name;
    public static java.util.Random rnd = new java.util.Random(System.currentTimeMillis());
    public final static int GROW = 1,
            VARIABLE = 2,
            RAMPED_HALF_AND_HALF = 0,
            HEAD = 0,
            GENE_TYPE = 0,
            GENE_NAME = 1,
            COMPATIBLE_GENES = 2,
            //-----------------------------------------------------------

            CLASSIFICATION = 0,
            REGRESSION = 1,
            FUZZY = 0,
            CATEGORY = 1,
            CONTINUOUS = 0,
            OTHER = 2;
    //------------------------------------------------------------
    private Node LAST_EXECUTED_GENE = null;
    private GP LAST_EXECUTED_GP = null;
    public static int NR_OFF_CATEGORIAL_ITEMS = 10;
    //------------------------------------------------------------
    private int NR_OF_FOLDS = 10,
            FOLD_SEED = -1,
            MAX_CREATION_DEPTH = 6,
            CREATION_TYPE = RAMPED_HALF_AND_HALF,
            PROBLEM_TYPE = CLASSIFICATION,
            VAL_SIZE = 0,
            TRAIN_SIZE = 75,
            TEST_SIZE = 25,
            STOP_WITHOUT_IMPROVMENT = 0,
            BATCH_SIZE = 1,
            POPULATION_SIZE = 200,
            GENERATIONS = 100,
            FIRST_ANN = -1,
            TOMBOLA_SLOTS = 10,
            TOMBOLA_INTERVALL = 10,
            ELITE_MUTATION = 2,
            NR_OF_WORK_THREADS = 4,
            SIMPLIFICATION_POPULATION = 200,
            SIMPLIFICATION_GENERATIONS = 30,
            SIMPLIFICATION_BATCH = 3,
            KNN_MAX = 17,
            KNN_MIN = 20,
            NR_OF_INPUT_COLUMNS,
            NR_OF_CONSIDERED_NEIGBHOURS = 50,
            RANDOM_FOREST_SIZE = 500,
            NR_OF_TOURNAMNET_MEMBERS=4, //0= Roulette wheel selection
            MAX_TREE_SIZE = 100;
    private double CROSSOVER_PROBABILITY = 0.9,
            REPRODUCTION_PROBABILITY = 0.1,
            MUTATION_PROBABILITY = 0.01,
            PUNISHMENT_FOR_LENGTH = 0.01,
            PUNISHMENT_FOR_ERROR = 1,
            MAX_FITNESS_FACTOR = 1,//ANvonds vid forenkling. annars or maxfitness antalet poster i troning + val. Anvonds f�r att m�jlig�ra ordentligt h�rd vbestraffning f�r fel mot tr�ningsm�ngden utan att riskre att fitnessen g�r under noll.
            TRAIN_IMPORTENS = 1,//Anger kostnaden for felklassificering i troningsmongden
            VAL_IMPORTENS = 1,
            TOMBOLA_PERCENT = 0.50,
            SIMPLIFICATION_FACTOR = 1,
            SELECTION_PERCENT = 0.2,
            SELECTION_IMPORTANCE = 1,
            TARGET_ACCURACY=-1,
            DT_SCORE_THRESHOLD = 0.01,
            DT_ENTROPY_THRESHOLD = 0.05,
            PARAMETER_1=0,
            PARAMETER_2=0,
            PARAMETER_3=0,
            PARAMETER_4=0;
    public static String CATEGORY_MARKER = "cat",
            CONTINUOUS_MARKER = "con",
            MARKER_MARKER = "MarkerColumn",
            OTHER_MARKER = "ann",
            TOMBOLA_FITNESFUNTCION = "med",
            AVERAGE = "avg",
            MEDIAN = "med",
            WORST = "wor",
            GENE_PACKAGE = "grex.Nodes";
    private String FITNESS_FUNCTION = "AccFitness",
            SIMPLIFICATION_FUNCTION = "SimplificationFitness",
            GP_SAVE_FILE = "GP.dat",
            USED_BNF = "",
            BNF_FILE = "Decision Tree",
            DATA_FILE = "iris.arff",
            FOLD = "F0",
            VAL_FOLD = "f1",
            RECIPIENTS = "",
            CUSTOM_METRICS="",
            CUSTOM_REG_METRICS="";
    private boolean MARKER_USED = true,
            MOFFN_USED = false,
            LENGTH_FACTOR_OLD = true,
            ELITISM = true,
            SIMPLIFICATION = false,
            FAST_SIMPLIFICATION = true,
            RUN_SIMPLIFICATION = false,
            RUN_CREATE_ALTERNATIVE = false,
            CALC_STATISTICS = false,
            CALC_CLASS_STATISTICS = false,
            INIT_NODES = false,
            RESET_NODES = false,
            FITT_GODS_CHOICE = false,
            TOMBOLA = false,
            AUTO_SAVE = false,
            god = false,
            KNN_WEIGHTED_VOTING = true,
            KNN_WEIGHTED_ATTRIBUTES = true,
            KNN_ATTRIBUTES_SELECTION = true,
            USE_GP_INJECTION=false,
            START_FROM_RANDOMFOREST=false,
            BUILD_DECISIONTREE=false,
            EVOLVE_RANDOMFOREST=false,
            RUN_EXPERIMENT_MODE=false,
            COMPARE_TO_MP5REGRESSION_MODEL=false,
            COMPARE_TO_OTHER_TECHNIQUES=false,
            RUN_GREX = true,
            ZeroR = false,
            ZeroRReg = false,
            J48 = false,
            SimpleCart = false,
            REPTree = false,
            ReptreeREG = false,
            MLP = false,
            MLPReg=false,
            SVM = false,
            SVMReg = false,
            RandomForest = false,
            LinearRegression = false,
            BaggingJ48 = false,
            PaceRegression = false,
            M5PRegTree = false,
            M5PModelTree = false,
            RBF = false,
            RULE_EXTRACT_FROM_RF=false,
            RULE_EXTRACTION_FROM_M5PBag = false,
            M5PBag = false,
            ORACLE_COACHING_TEST = false,
            LAPLACE = false,
            EXP_VAL_FOLDS = false,
            REPORT_TRAINING = false,
            R_MAE=true,
            R_RMSE=true,
            R_MAPE=true,
            R_MUAPE=true,
            R_CORR=true,
            R_LENGTH=true,
            R_ACC=true,
            R_AUC=true,
            R_BRI=true,
            R_BRE=true;
    
            
    private double[] WEIGHTS = null;
    private int[] probOrder = null;

    public String toString() {
        String s = "";
        s += "Data file:\t\t" + getDATA_FILE() + " \n";
        s += "Test fold:\t\t" + getTestFOLD() + " \n";
        s += "Nr of folds:\t\t" + getNR_OF_FOLDS() + " \n";
        s += "Fold seed:\t\t" + getFOLD_SEED() + " \n";
        s += "BNF file\t\t" + getBNF_FILE() + " \n";
        s += "Marker Used:\t\t" + getMARKER_USED() + " \n";
        s += "Train%:\t\t\t" + getTRAIN_SIZE() + " \n";
        s += "Val%:\t\t\t" + getVAL_SIZE() + " \n";
        s += "Test%:\t\t\t" + getTEST_SIZE() + " \n";
        s += "\n";
        s += "Fitness function:\t" + getFITNESS_FUNCTION() + " \n";
        s += "Generations:\t\t" + getGENERATIONS() + " \n";
        s += "Population:\t\t" + getPOPULATION_SIZE() + " \n";
        s += "Length Punishment:\t" + getPUNISHMENT_FOR_LENGTH() + " \n";
        s += "Max Size:\t" + getMAX_TREE_SIZE() + " \n";
        s += "Crossover Prob:\t\t" + getCROSSOVER_PROBABILITY() + " \n";
        s += "Mutation Prob:\t\t" + getMUTATION_PROBABILITY() + " \n";
        s += "Creation depth:\t\t" + getMAX_CREATION_DEPTH() + " \n";
        s += "Batch size:\t\t" + getBATCH_SIZE() + " \n";
        s += "Persistence:\t\t" + getSTOP_WITHOUT_IMPROVMENT() + " \n";
        s += "Auto simplification:\t\t" + isSIMPLIFICATION() + " \n";
        s += "Parameter 1:\t\t" + getPARAMETER_1() + " \n";
        s += "Parameter 1:\t\t" + getPARAMETER_2() + " \n";
        s += "Parameter 1:\t\t" + getPARAMETER_3() + " \n";
        s += "Parameter 1:\t\t" + getPARAMETER_4() + " \n";
        return s;
    }

    public Node getLAST_EXECUTED_GENE() {
        return LAST_EXECUTED_GENE;
    }

    public void setLAST_EXECUTED_GENE(Node LAST_EXECUTED_GENE) {
        this.LAST_EXECUTED_GENE = LAST_EXECUTED_GENE;
    }

    public GP getLAST_EXECUTED_GP() {
        return LAST_EXECUTED_GP;
    }

    public void setLAST_EXECUTED_GP(GP LAST_EXECUTED_GP) {
        this.LAST_EXECUTED_GP = LAST_EXECUTED_GP;
    }

    public int getMAX_CREATION_DEPTH() {
        return MAX_CREATION_DEPTH;
    }

    public void setMAX_CREATION_DEPTH(int MAX_CREATION_DEPTH) {
        this.MAX_CREATION_DEPTH = MAX_CREATION_DEPTH;
    }

    public int getCREATION_TYPE() {
        return CREATION_TYPE;
    }

    public void setCREATION_TYPE(int CREATION_TYPE) {
        this.CREATION_TYPE = CREATION_TYPE;
    }

    public int getPROBLEM_TYPE() {
        return PROBLEM_TYPE;
    }

    public void setPROBLEM_TYPE(int PROBLEM_TYPE) {
        this.PROBLEM_TYPE = PROBLEM_TYPE;
    }

    public int getNR_OFF_CATEGORIAL_ITEMS() {
        return NR_OFF_CATEGORIAL_ITEMS;
    }

    public void setNR_OFF_CATEGORIAL_ITEMS(int NR_OFF_CATEGORIAL_ITEMS) {
        this.NR_OFF_CATEGORIAL_ITEMS = NR_OFF_CATEGORIAL_ITEMS;
    }

    public int getSTOP_WITHOUT_IMPROVMENT() {
        return STOP_WITHOUT_IMPROVMENT;
    }

    public void setSTOP_WITHOUT_IMPROVMENT(int STOP_WITHOUT_IMPROVMENT) {
        this.STOP_WITHOUT_IMPROVMENT = STOP_WITHOUT_IMPROVMENT;
    }

    public int getBATCH_SIZE() {
        return BATCH_SIZE;
    }

    public void setBATCH_SIZE(int BATCH_SIZE) {
        this.BATCH_SIZE = BATCH_SIZE;
    }

    public int getPOPULATION_SIZE() {
        return POPULATION_SIZE;
    }

    public void setPOPULATION_SIZE(int POPULATION_SIZE) {
        this.POPULATION_SIZE = POPULATION_SIZE;
    }

    public int getGENERATIONS() {
        return GENERATIONS;
    }

    public void setGENERATIONS(int GENERATIONS) {
        this.GENERATIONS = GENERATIONS;
    }

    public int getFIRST_ANN() {
        return FIRST_ANN;
    }

    public void setFIRST_ANN(int FIRST_ANN) {
        this.FIRST_ANN = FIRST_ANN;
    }

    public int getTOMBOLA_SLOTS() {
        return TOMBOLA_SLOTS;
    }

    public void setTOMBOLA_SLOTS(int TOMBOLA_SLOTS) {
        this.TOMBOLA_SLOTS = TOMBOLA_SLOTS;
    }

    public int getTOMBOLA_INTERVALL() {
        return TOMBOLA_INTERVALL;
    }

    public void setTOMBOLA_INTERVALL(int TOMBOLA_INTERVALL) {
        this.TOMBOLA_INTERVALL = TOMBOLA_INTERVALL;
    }

    public int getELITE_MUTATION() {
        return ELITE_MUTATION;
    }

    public void setELITE_MUTATION(int ELITE_MUTATION) {
        this.ELITE_MUTATION = ELITE_MUTATION;
    }

    public int getNR_OF_WORK_THREADS() {
        return NR_OF_WORK_THREADS;
    }

    public void setNR_OF_WORK_THREADS(int NR_OF_WORK_THREADS) {
        this.NR_OF_WORK_THREADS = NR_OF_WORK_THREADS;
    }

    public int getSIMPLIFICATION_POPULATION() {
        return SIMPLIFICATION_POPULATION;
    }

    public void setSIMPLIFICATION_POPULATION(int SIMPLIFICATION_POPULATION) {
        this.SIMPLIFICATION_POPULATION = SIMPLIFICATION_POPULATION;
    }

    public int getSIMPLIFICATION_GENERATIONS() {
        return SIMPLIFICATION_GENERATIONS;
    }

    public void setSIMPLIFICATION_GENERATIONS(int SIMPLIFICATION_GENERATIONS) {
        this.SIMPLIFICATION_GENERATIONS = SIMPLIFICATION_GENERATIONS;
    }

    public int getSIMPLIFICATION_BATCH() {
        return SIMPLIFICATION_BATCH;
    }

    public void setSIMPLIFICATION_BATCH(int SIMPLIFICATION_BATCH) {
        this.SIMPLIFICATION_BATCH = SIMPLIFICATION_BATCH;
    }

    public double getCROSSOVER_PROBABILITY() {
        return CROSSOVER_PROBABILITY;
    }

    public void setCROSSOVER_PROBABILITY(double CROSSOVER_PROBABILITY) {
        this.CROSSOVER_PROBABILITY = CROSSOVER_PROBABILITY;
    }

    public double getREPRODUCTION_PROBABILITY() {
        return REPRODUCTION_PROBABILITY;
    }

    public void setREPRODUCTION_PROBABILITY(double REPRODUCTION_PROBABILITY) {
        this.REPRODUCTION_PROBABILITY = REPRODUCTION_PROBABILITY;
    }

    public double getMUTATION_PROBABILITY() {
        return MUTATION_PROBABILITY;
    }

    public void setMUTATION_PROBABILITY(double MUTATION_PROBABILITY) {
        this.MUTATION_PROBABILITY = MUTATION_PROBABILITY;
    }

    public double getPUNISHMENT_FOR_LENGTH() {
        return PUNISHMENT_FOR_LENGTH;
    }

    public void setPUNISHMENT_FOR_LENGTH(double PUNISHMENT_FOR_LENGTH) {
        this.PUNISHMENT_FOR_LENGTH = PUNISHMENT_FOR_LENGTH;
    }

    public double getPUNISHMENT_FOR_ERROR() {
        return PUNISHMENT_FOR_ERROR;
    }

    public void setPUNISHMENT_FOR_ERROR(double PUNISHMENT_FOR_ERROR) {
        this.PUNISHMENT_FOR_ERROR = PUNISHMENT_FOR_ERROR;
    }

    public double getMAX_FITNESS_FACTOR() {
        return MAX_FITNESS_FACTOR;
    }

    public void setMAX_FITNESS_FACTOR(double MAX_FITNESS_FACTOR) {
        this.MAX_FITNESS_FACTOR = MAX_FITNESS_FACTOR;
    }

    public double getTRAIN_IMPORTENS() {
        return TRAIN_IMPORTENS;
    }

    public void setTRAIN_IMPORTENS(double TRAIN_IMPORTENS) {
        this.TRAIN_IMPORTENS = TRAIN_IMPORTENS;
    }

    public double getVAL_IMPORTENS() {
        return VAL_IMPORTENS;
    }

    public void setVAL_IMPORTENS(double VAL_IMPORTENS) {
        this.VAL_IMPORTENS = VAL_IMPORTENS;
    }

    public int getVAL_SIZE() {
        return VAL_SIZE;
    }

    public void setVAL_SIZE(int VAL_SIZE) {
        this.VAL_SIZE = VAL_SIZE;
    }

    public int getTRAIN_SIZE() {
        return TRAIN_SIZE;
    }

    public void setTRAIN_SIZE(int TRAIN_SIZE) {
        this.TRAIN_SIZE = TRAIN_SIZE;
    }

    public int getTEST_SIZE() {
        return TEST_SIZE;
    }

    public void setTEST_SIZE(int TEST_SIZE) {
        this.TEST_SIZE = TEST_SIZE;
    }

    public double getTOMBOLA_PERCENT() {
        return TOMBOLA_PERCENT;
    }

    public void setTOMBOLA_PERCENT(double TOMBOLA_PERCENT) {
        this.TOMBOLA_PERCENT = TOMBOLA_PERCENT;
    }

    public double getSIMPLIFICATION_FACTOR() {
        return SIMPLIFICATION_FACTOR;
    }

    public void setSIMPLIFICATION_FACTOR(double SIMPLIFICATION_FACTOR) {
        this.SIMPLIFICATION_FACTOR = SIMPLIFICATION_FACTOR;
    }

    public String getFITNESS_FUNCTION() {
        return FITNESS_FUNCTION;
    }

    public void setFITNESS_FUNCTION(String FITNESS_FUNCTION) {
        this.FITNESS_FUNCTION = FITNESS_FUNCTION;
    }

    public String getSIMPLIFICATION_FUNCTION() {
        return SIMPLIFICATION_FUNCTION;
    }

    public void setSIMPLIFICATION_FUNCTION(String SIMPLIFICATION_FUNCTION) {
        this.SIMPLIFICATION_FUNCTION = SIMPLIFICATION_FUNCTION;
    }

    public String getGP_SAVE_FILE() {
        return GP_SAVE_FILE;
    }

    public void setGP_SAVE_FILE(String GP_SAVE_FILE) {
        this.GP_SAVE_FILE = GP_SAVE_FILE;
    }

    public String getUSED_BNF() {
        return USED_BNF;
    }

    public void setUSED_BNF(String USED_BNF) {
        this.USED_BNF = USED_BNF;
    }

    public String getBNF_FILE() {
        return BNF_FILE;
    }

    public void setBNF_FILE(String BNF_FILE) {
        this.BNF_FILE = BNF_FILE;
    }

    public String getDATA_FILE() {
        return DATA_FILE;
    }

    public void setDATA_FILE(String DATA_FILE) {
        this.DATA_FILE = DATA_FILE;
    }

    public String getCATEGORY_MARKER() {
        return CATEGORY_MARKER;
    }

    public void setCATEGORY_MARKER(String CATEGORY_MARKER) {
        this.CATEGORY_MARKER = CATEGORY_MARKER;
    }

    public String getCONTINUOUS_MARKER() {
        return CONTINUOUS_MARKER;
    }

    public void setCONTINUOUS_MARKER(String CONTINUOUS_MARKER) {
        this.CONTINUOUS_MARKER = CONTINUOUS_MARKER;
    }

    public String getMARKER_MARKER() {
        return MARKER_MARKER;
    }

    public void setMARKER_MARKER(String MARKER_MARKER) {
        this.MARKER_MARKER = MARKER_MARKER;
    }

    public String getOTHER_MARKER() {
        return OTHER_MARKER;
    }

    public void setOTHER_MARKER(String OTHER_MARKER) {
        this.OTHER_MARKER = OTHER_MARKER;
    }

    public String getTOMBOLA_FITNESFUNTCION() {
        return TOMBOLA_FITNESFUNTCION;
    }

    public void setTOMBOLA_FITNESFUNTCION(String TOMBOLA_FITNESFUNTCION) {
        this.TOMBOLA_FITNESFUNTCION = TOMBOLA_FITNESFUNTCION;
    }

    public String getAVERAGE() {
        return AVERAGE;
    }

    public void setAVERAGE(String AVERAGE) {
        this.AVERAGE = AVERAGE;
    }

    public String getMEDIAN() {
        return MEDIAN;
    }

    public void setMEDIAN(String MEDIAN) {
        this.MEDIAN = MEDIAN;
    }

    public String getWORST() {
        return WORST;
    }

    public void setWORST(String WORST) {
        this.WORST = WORST;
    }

    public String getGENE_PACKAGE() {
        return GENE_PACKAGE;
    }

    public boolean isMARKER_USED() {
        return MARKER_USED;
    }

    public void setMARKER_USED(boolean MARKER_USED) {
        this.MARKER_USED = MARKER_USED;
    }

    public boolean getMARKER_USED() {
        return MARKER_USED;
    }

    public boolean isMOFFN_USED() {
        return MOFFN_USED;
    }

    public void setMOFFN_USED(boolean MOFFN_USED) {
        this.MOFFN_USED = MOFFN_USED;
    }

    public boolean isLENGTH_FACTOR_OLD() {
        return LENGTH_FACTOR_OLD;
    }

    public void setLENGTH_FACTOR_OLD(boolean LENGTH_FACTOR_OLD) {
        this.LENGTH_FACTOR_OLD = LENGTH_FACTOR_OLD;
    }

    public boolean isELITISM() {
        return ELITISM;
    }

    public void setELITISM(boolean ELITISM) {
        this.ELITISM = ELITISM;
    }

    public boolean isSIMPLIFICATION() {
        return SIMPLIFICATION;
    }

    public void setSIMPLIFICATION(boolean SIMPLIFICATION) {
        this.SIMPLIFICATION = SIMPLIFICATION;
    }

    public boolean isRUN_SIMPLIFICATION() {
        return RUN_SIMPLIFICATION;
    }

    public void setRUN_SIMPLIFICATION(boolean RUN_SIMPLIFICATION) {
        this.RUN_SIMPLIFICATION = RUN_SIMPLIFICATION;
    }

    public boolean isCALC_STATISTICS() {
        return CALC_STATISTICS;
    }

    public void setCALC_STATISTICS(boolean CALC_STATISTICS) {
        this.CALC_STATISTICS = CALC_STATISTICS;
    }

    public boolean isCALC_CLASS_STATISTICS() {
        return CALC_CLASS_STATISTICS;
    }

    public void setCALC_CLASS_STATISTICS(boolean CALC_CLASS_STATISTICS) {
        this.CALC_CLASS_STATISTICS = CALC_CLASS_STATISTICS;
    }

    public boolean isINIT_NODES() {
        return INIT_NODES;
    }

    public void setINIT_NODES(boolean INIT_NODES) {
        this.INIT_NODES = INIT_NODES;
    }

    public boolean isTOMBOLA() {
        return TOMBOLA;
    }

    public void setTOMBOLA(boolean TOMBOLA) {
        this.TOMBOLA = TOMBOLA;
    }

    public double[] getWEIGHTS() {
        return WEIGHTS;
    }

    public void setWEIGHTS(double[] WEIGHTS) {
        this.WEIGHTS = WEIGHTS;
    }

    public String getTestFOLD() {
        return FOLD;
    }

    public void setTestFOLD(String FOLD) {
        this.FOLD = FOLD;
    }

    public int getFOLD_SEED() {
        return FOLD_SEED;
    }

    public void setFOLD_SEED(int FOLD_SEED) {
        this.FOLD_SEED = FOLD_SEED;
    }

    public int getNR_OF_FOLDS() {
        return NR_OF_FOLDS;
    }

    public void setNR_OF_FOLDS(int NR_OF_FOLDS) {
        this.NR_OF_FOLDS = NR_OF_FOLDS;
    }

    public boolean isAUTO_SAVE() {
        return AUTO_SAVE;
    }

    public void setAUTO_SAVE(boolean AUTO_SAVE) {
        this.AUTO_SAVE = AUTO_SAVE;
    }

    public String getVAL_FOLD() {
        return VAL_FOLD;
    }

    public void setVAL_FOLD(String VAL_FOLD) {
        this.VAL_FOLD = VAL_FOLD;
    }

    public String getRECIPIENTS() {
        return RECIPIENTS;
    }

    public void setRECIPIENTS(String RECIPIENTS) {
        this.RECIPIENTS = RECIPIENTS;
    }

    public boolean initGod() {
        return god;
    }

    public void setGod(boolean god) {
        this.god = god;
    }

    public boolean isFITT_GODS_CHOICE() {
        return FITT_GODS_CHOICE;
    }

    public void setFITT_GODS_CHOICE(boolean FITT_GODS_CHOICE) {
        this.FITT_GODS_CHOICE = FITT_GODS_CHOICE;
    }

    public boolean isRESET_NODES() {
        return RESET_NODES;
    }

    public void setRESET_NODES(boolean RESET_NODES) {
        this.RESET_NODES = RESET_NODES;
    }

    public double getSELECTION_PERCENT() {
        return SELECTION_PERCENT;
    }

    public void setSELECTION_PERCENT(double SELECTION_PERCENT) {
        this.SELECTION_PERCENT = SELECTION_PERCENT;
    }

    public double getSELECTION_IMPORTANCE() {
        return SELECTION_IMPORTANCE;
    }

    public void setSELECTION_IMPORTANCE(double SELECTION_IMPORTANCE) {
        this.SELECTION_IMPORTANCE = SELECTION_IMPORTANCE;
    }

    public Hashtable<double[], Hashtable<double[], Double>> getKnnDists() {
        return knnDists;
    }

    public boolean isKNN_WEIGHTED_ATTRIBUTES() {
        return KNN_WEIGHTED_ATTRIBUTES;
    }

    public void setKNN_WEIGHTED_ATTRIBUTES(boolean KNN_WEIGHTED_ATTRIBUTES) {
        this.KNN_WEIGHTED_ATTRIBUTES = KNN_WEIGHTED_ATTRIBUTES;
    }

    public boolean isKNN_WEIGHTED_VOTING() {
        return KNN_WEIGHTED_VOTING;
    }

    public void setKNN_WEIGHTED_VOTING(boolean KNN_WEIGHTED_VOTING) {
        this.KNN_WEIGHTED_VOTING = KNN_WEIGHTED_VOTING;
    }

    public int getKNN_MAX() {
        return KNN_MAX;
    }

    public void setKNN_MAX(int KNN_MAX) {
        this.KNN_MAX = KNN_MAX;
    }

    public int getKNN_MIN() {
        return KNN_MIN;
    }

    public void setKNN_MIN(int KNN_MIN) {
        this.KNN_MIN = KNN_MIN;
    }

    public int getNR_OF_INPUT_COLUMNS() {
        return NR_OF_INPUT_COLUMNS;
    }

    public void setNR_OF_INPUT_COLUMNS(int NR_OF_INPUT_COLUMNS) {
        this.NR_OF_INPUT_COLUMNS = NR_OF_INPUT_COLUMNS;
    }

    public int getNR_OF_CONSIDERED_NEIGBHOURS() {
        return NR_OF_CONSIDERED_NEIGBHOURS;
    }

    public void setNR_OF_CONSIDERED_NEIGBHOURS(int NR_OF_CONSIDERED_NEIGBHOURS) {
        this.NR_OF_CONSIDERED_NEIGBHOURS = NR_OF_CONSIDERED_NEIGBHOURS;
    }

    @Override
    protected Options clone() throws CloneNotSupportedException {
        Options o = new Options();
        o.LAST_EXECUTED_GENE = LAST_EXECUTED_GENE;
        o.LAST_EXECUTED_GP = LAST_EXECUTED_GP;
        o.NR_OF_FOLDS = NR_OF_FOLDS;
        o.FOLD_SEED = FOLD_SEED;
        o.MAX_CREATION_DEPTH = MAX_CREATION_DEPTH;
        o.CREATION_TYPE = CREATION_TYPE;
        o.PROBLEM_TYPE = PROBLEM_TYPE;
        o.VAL_SIZE = VAL_SIZE;
        o.TRAIN_SIZE = TRAIN_SIZE;
        o.TEST_SIZE = TEST_SIZE;
        o.STOP_WITHOUT_IMPROVMENT = STOP_WITHOUT_IMPROVMENT;
        o.BATCH_SIZE = BATCH_SIZE;
        o.POPULATION_SIZE = POPULATION_SIZE;
        o.GENERATIONS = GENERATIONS;
        o.FIRST_ANN = FIRST_ANN;
        o.TOMBOLA_SLOTS = TOMBOLA_SLOTS;
        o.TOMBOLA_INTERVALL = TOMBOLA_INTERVALL;
        o.ELITE_MUTATION = ELITE_MUTATION;
        o.NR_OF_WORK_THREADS = NR_OF_WORK_THREADS;
        o.SIMPLIFICATION_POPULATION = SIMPLIFICATION_POPULATION;
        o.SIMPLIFICATION_GENERATIONS = SIMPLIFICATION_GENERATIONS;
        o.SIMPLIFICATION_BATCH = SIMPLIFICATION_BATCH;
        o.KNN_MAX = KNN_MAX;
        o.KNN_MIN = KNN_MIN;
        o.NR_OF_INPUT_COLUMNS = NR_OF_INPUT_COLUMNS;
        o.NR_OF_CONSIDERED_NEIGBHOURS = NR_OF_CONSIDERED_NEIGBHOURS;
        o.CROSSOVER_PROBABILITY = CROSSOVER_PROBABILITY;
        o.REPRODUCTION_PROBABILITY = REPRODUCTION_PROBABILITY;
        o.MUTATION_PROBABILITY = MUTATION_PROBABILITY;
        o.PUNISHMENT_FOR_LENGTH = PUNISHMENT_FOR_LENGTH;
        o.PUNISHMENT_FOR_ERROR = PUNISHMENT_FOR_ERROR;
        o.MAX_FITNESS_FACTOR = MAX_FITNESS_FACTOR;
        o.TRAIN_IMPORTENS = TRAIN_IMPORTENS;
        o.VAL_IMPORTENS = VAL_IMPORTENS;
        o.TOMBOLA_PERCENT = TOMBOLA_PERCENT;
        o.SIMPLIFICATION_FACTOR = SIMPLIFICATION_FACTOR;
        o.SELECTION_PERCENT = SELECTION_PERCENT;
        o.SELECTION_IMPORTANCE = SELECTION_IMPORTANCE;
        o.FITNESS_FUNCTION = FITNESS_FUNCTION;
        o.SIMPLIFICATION_FUNCTION = SIMPLIFICATION_FUNCTION;
        o.GP_SAVE_FILE = GP_SAVE_FILE;
        o.USED_BNF = USED_BNF;
        o.BNF_FILE = BNF_FILE;
        o.DATA_FILE = DATA_FILE;
        o.FOLD = FOLD;
        o.VAL_FOLD = VAL_FOLD;
        o.RECIPIENTS = RECIPIENTS;
        o.MARKER_USED = MARKER_USED;
        o.MOFFN_USED = MARKER_USED;
        o.LENGTH_FACTOR_OLD = LENGTH_FACTOR_OLD;
        o.ELITISM = ELITISM;
        o.SIMPLIFICATION = SIMPLIFICATION;
        o.RUN_SIMPLIFICATION = RUN_SIMPLIFICATION;
        o.CALC_STATISTICS = CALC_STATISTICS;
        o.CALC_CLASS_STATISTICS = CALC_CLASS_STATISTICS;
        o.INIT_NODES = INIT_NODES;
        o.RESET_NODES = RESET_NODES;
        o.FITT_GODS_CHOICE = FITT_GODS_CHOICE;
        o.TOMBOLA = TOMBOLA;
        o.AUTO_SAVE = AUTO_SAVE;
        o.god = god;
        o.KNN_WEIGHTED_VOTING = KNN_WEIGHTED_VOTING;
        o.KNN_WEIGHTED_ATTRIBUTES = KNN_WEIGHTED_ATTRIBUTES;
        o.WEIGHTS = WEIGHTS;
        o.USE_GP_INJECTION=USE_GP_INJECTION;
        o.START_FROM_RANDOMFOREST=START_FROM_RANDOMFOREST;
        o.BUILD_DECISIONTREE=BUILD_DECISIONTREE;
        o.EVOLVE_RANDOMFOREST=EVOLVE_RANDOMFOREST;
        o.gp=gp;
        o.RANDOM_FOREST_SIZE = RANDOM_FOREST_SIZE;
        o.DT_ENTROPY_THRESHOLD = DT_ENTROPY_THRESHOLD;
        o.DT_SCORE_THRESHOLD = DT_SCORE_THRESHOLD;
        return o;
    }

    public boolean isKNN_ATTRIBUTES_SELECTION() {
        return KNN_ATTRIBUTES_SELECTION;
    }

    public void setKNN_ATTRIBUTES_SELECTION(boolean KNN_ATTRIBUTES_SELECTION) {
        this.KNN_ATTRIBUTES_SELECTION = KNN_ATTRIBUTES_SELECTION;
    }

    /**
     * @return the probOrder
     */
    public int[] getProbOrder() {
        return probOrder;
    }

    /**
     * @return the START_FROM_DECISONTREE
     */
    public boolean isUSE_GP_INJECTION() {
        return USE_GP_INJECTION;
    }

    /**
     * @param START_FROM_DECISONTREE the START_FROM_DECISONTREE to set
     */
    public void setUSE_GP_INJECTION(boolean START_FROM_DECISONTREE) {
        this.USE_GP_INJECTION = START_FROM_DECISONTREE;
    }

    /**
     * @return the START_FROM_RANDOMFOREST
     */
    public boolean isSTART_FROM_RANDOMFOREST() {
        return START_FROM_RANDOMFOREST;
    }

    /**
     * @param START_FROM_RANDOMFOREST the START_FROM_RANDOMFOREST to set
     */
    public void setSTART_FROM_RANDOMFOREST(boolean START_FROM_RANDOMFOREST) {
        this.START_FROM_RANDOMFOREST = START_FROM_RANDOMFOREST;
    }

    /**
     * @param probOrder the probOrder to set
     */
    public void setProbOrder(int[] probOrder) {
        this.probOrder = probOrder;
    }

    /**
     * @return the EVOLVE_RANDOMFOREST
     */
    public boolean isEVOLVE_RANDOMFOREST() {
        return EVOLVE_RANDOMFOREST;
    }

    /**
     * @param EVOLVE_RANDOMFOREST the EVOLVE_RANDOMFOREST to set
     */
    public void setEVOLVE_RANDOMFOREST(boolean EVOLVE_RANDOMFOREST) {
        this.EVOLVE_RANDOMFOREST = EVOLVE_RANDOMFOREST;
    }

    /**
     * @return the TARGET_ACCURACY
     */
    public double getTARGET_ACCURACY() {
        return TARGET_ACCURACY;
    }

    /**
     * @param TARGET_ACCURACY the TARGET_ACCURACY to set
     */
    public void setTARGET_ACCURACY(double TARGET_ACCURACY) {
        this.TARGET_ACCURACY = TARGET_ACCURACY;
    }

    /**
     * @return the BUILD_DECISIONTREE
     */
    public boolean isBUILD_DECISIONTREE() {
        return BUILD_DECISIONTREE;
    }

    /**
     * @param BUILD_DECISIONTREE the BUILD_DECISIONTREE to set
     */
    public void setBUILD_DECISIONTREE(boolean BUILD_DECISIONTREE) {
        this.BUILD_DECISIONTREE = BUILD_DECISIONTREE;
    }

    /**
     * @return the NR_OF_TOURNAMNET_MEMBERS
     */
    public int getNR_OF_TOURNAMNET_MEMBERS() {
        return NR_OF_TOURNAMNET_MEMBERS;
    }

    /**
     * @param NR_OF_TOURNAMNET_MEMBERS the NR_OF_TOURNAMNET_MEMBERS to set
     */
    public void setNR_OF_TOURNAMNET_MEMBERS(int NR_OF_TOURNAMNET_MEMBERS) {
        this.NR_OF_TOURNAMNET_MEMBERS = NR_OF_TOURNAMNET_MEMBERS;
    }

    /**
     * @return the DT_SCORE_THRESHOLD
     */
    public double getDT_SCORE_THRESHOLD() {
        return DT_SCORE_THRESHOLD;
    }

    /**
     * @param DT_SCORE_THRESHOLD the DT_SCORE_THRESHOLD to set
     */
    public void setDT_SCORE_THRESHOLD(double DT_SCORE_THRESHOLD) {
        this.DT_SCORE_THRESHOLD = DT_SCORE_THRESHOLD;
    }

    /**
     * @return the DT_ENTROPY_THRESHOLD
     */
    public double getDT_ENTROPY_THRESHOLD() {
        return DT_ENTROPY_THRESHOLD;
    }

    /**
     * @param DT_ENTROPY_THRESHOLD the DT_ENTROPY_THRESHOLD to set
     */
    public void setDT_ENTROPY_THRESHOLD(double DT_ENTROPY_THRESHOLD) {
        this.DT_ENTROPY_THRESHOLD = DT_ENTROPY_THRESHOLD;
    }

    /**
     * @return the RANDOM_FOREST_SIZE
     */
    public int getRANDOM_FOREST_SIZE() {
        return RANDOM_FOREST_SIZE;
    }

    /**
     * @param RANDOM_FOREST_SIZE the RANDOM_FOREST_SIZE to set
     */
    public void setRANDOM_FOREST_SIZE(int RANDOM_FOREST_SIZE) {
        this.RANDOM_FOREST_SIZE = RANDOM_FOREST_SIZE;
    }

    /**
     * @return the RUN_CREATE_ALTERNATIVE
     */
    public boolean isRUN_CREATE_ALTERNATIVE() {
        return RUN_CREATE_ALTERNATIVE;
    }

    /**
     * @param RUN_CREATE_ALTERNATIVE the RUN_CREATE_ALTERNATIVE to set
     */
    public void setRUN_CREATE_ALTERNATIVE(boolean RUN_CREATE_ALTERNATIVE) {
        this.RUN_CREATE_ALTERNATIVE = RUN_CREATE_ALTERNATIVE;
    }

    /**
     * @return the gp
     */
    public GP getGp() {
        return gp;
    }

    /**
     * @param gp the gp to set
     */
    public void setGp(GP gp) {
        this.gp = gp;
    }

    /**
     * @return the winners
     */
    public CopyOnWriteArrayList<GP> getWinners() {
        return winners;
    }

    /**
     * @param winners the winners to set
     */
    public void setWinners(CopyOnWriteArrayList<GP> winners) {
        this.winners = winners;
    }

	public void setRUN_EXPERIMENT_MODE(boolean b) {
		this.RUN_EXPERIMENT_MODE = b;		
	}

	public boolean getRUN_EXPERIMENT_MODE() {
		return RUN_EXPERIMENT_MODE;		
	}

    /**
     * @return the PARAMETER_1
     */
    public double getPARAMETER_1() {
        return PARAMETER_1;
    }

    /**
     * @param PARAMETER_1 the PARAMETER_1 to set
     */
    public void setPARAMETER_1(double PARAMETER_1) {
        this.PARAMETER_1 = PARAMETER_1;
    }

    /**
     * @return the PARAMETER_2
     */
    public double getPARAMETER_2() {
        return PARAMETER_2;
    }

    /**
     * @param PARAMETER_2 the PARAMETER_2 to set
     */
    public void setPARAMETER_2(double PARAMETER_2) {
        this.PARAMETER_2 = PARAMETER_2;
    }

    /**
     * @return the PARAMETER_3
     */
    public double getPARAMETER_3() {
        return PARAMETER_3;
    }

    /**
     * @param PARAMETER_3 the PARAMETER_3 to set
     */
    public void setPARAMETER_3(double PARAMETER_3) {
        this.PARAMETER_3 = PARAMETER_3;
    }

    /**
     * @return the PARAMETER_4
     */
    public double getPARAMETER_4() {
        return PARAMETER_4;
    }

    /**
     * @param PARAMETER_4 the PARAMETER_4 to set
     */
    public void setPARAMETER_4(double PARAMETER_4) {
        this.PARAMETER_4 = PARAMETER_4;
    }

    /**
     * @return the MAX_TREE_SIZE
     */
    public int getMAX_TREE_SIZE() {
        return MAX_TREE_SIZE;
    }

    /**
     * @param MAX_TREE_SIZE the MAX_TREE_SIZE to set
     */
    public void setMAX_TREE_SIZE(int MAX_TREE_SIZE) {
        this.MAX_TREE_SIZE = MAX_TREE_SIZE;
    }

    /**
     * @return the COMPARE_TO_MP5REGRESSION_MODEL
     */
    public boolean isCOMPARE_TO_MP5REGRESSION_MODEL() {
        return COMPARE_TO_MP5REGRESSION_MODEL;
    }

    /**
     * @param COMPARE_TO_MP5REGRESSION_MODEL the COMPARE_TO_MP5REGRESSION_MODEL to set
     */
    public void setCOMPARE_TO_MP5REGRESSION_MODEL(boolean COMPARE_TO_MP5REGRESSION_MODEL) {
        this.COMPARE_TO_MP5REGRESSION_MODEL = COMPARE_TO_MP5REGRESSION_MODEL;
    }

    /**
     * @return the COMPARE_TO_OTHER_TECHNIQUES
     */
    public boolean isCOMPARE_TO_OTHER_TECHNIQUES() {
        return COMPARE_TO_OTHER_TECHNIQUES;
    }

    /**
     * @param COMPARE_TO_OTHER_TECHNIQUES the COMPARE_TO_OTHER_TECHNIQUES to set
     */
    public void setCOMPARE_TO_OTHER_TECHNIQUES(boolean COMPARE_TO_OTHER_TECHNIQUES) {
        this.COMPARE_TO_OTHER_TECHNIQUES = COMPARE_TO_OTHER_TECHNIQUES;
    }

    /**
     * @return the RUN_GREX
     */
    public boolean isRUN_GREX() {
        return RUN_GREX;
    }

    /**
     * @param RUN_GREX the RUN_GREX to set
     */
    public void setRUN_GREX(boolean RUN_GREX) {
        this.RUN_GREX = RUN_GREX;
    }

    /**
     * @return the ZeroR
     */
    public boolean isZeroR() {
        return ZeroR;
    }

    /**
     * @param ZeroR the ZeroR to set
     */
    public void setZeroR(boolean ZeroR) {
        this.ZeroR = ZeroR;
    }

    /**
     * @return the ZeroRReg
     */
    public boolean isZeroRReg() {
        return ZeroRReg;
    }

    /**
     * @param ZeroRReg the ZeroRReg to set
     */
    public void setZeroRReg(boolean ZeroRReg) {
        this.ZeroRReg = ZeroRReg;
    }

    /**
     * @return the J48
     */
    public boolean isJ48() {
        return J48;
    }

    /**
     * @param J48 the J48 to set
     */
    public void setJ48(boolean J48) {
        this.J48 = J48;
    }

    /**
     * @return the SimpleCart
     */
    public boolean isSimpleCart() {
        return SimpleCart;
    }

    /**
     * @param SimpleCart the SimpleCart to set
     */
    public void setSimpleCart(boolean SimpleCart) {
        this.SimpleCart = SimpleCart;
    }

    /**
     * @return the REPTree
     */
    public boolean isREPTree() {
        return REPTree;
    }

    /**
     * @param REPTree the REPTree to set
     */
    public void setREPTree(boolean REPTree) {
        this.REPTree = REPTree;
    }

    /**
     * @return the ReptreeREG
     */
    public boolean isReptreeREG() {
        return ReptreeREG;
    }

    /**
     * @param ReptreeREG the ReptreeREG to set
     */
    public void setReptreeREG(boolean ReptreeREG) {
        this.ReptreeREG = ReptreeREG;
    }

    /**
     * @return the MLP
     */
    public boolean isMLP() {
        return MLP;
    }

    /**
     * @param MLP the MLP to set
     */
    public void setMLP(boolean MLP) {
        this.MLP = MLP;
    }

    /**
     * @return the MLPReg
     */
    public boolean isMLPReg() {
        return MLPReg;
    }

    /**
     * @param MLPReg the MLPReg to set
     */
    public void setMLPReg(boolean MLPReg) {
        this.MLPReg = MLPReg;
    }

    /**
     * @return the SVM
     */
    public boolean isSVM() {
        return SVM;
    }

    /**
     * @param SVM the SVM to set
     */
    public void setSVM(boolean SVM) {
        this.SVM = SVM;
    }

    /**
     * @return the SVMReg
     */
    public boolean isSVMReg() {
        return SVMReg;
    }

    /**
     * @param SVMReg the SVMReg to set
     */
    public void setSVMReg(boolean SVMReg) {
        this.SVMReg = SVMReg;
    }

    /**
     * @return the RandomForest
     */
    public boolean isRandomForest() {
        return RandomForest;
    }

    /**
     * @param RandomForest the RandomForest to set
     */
    public void setRandomForest(boolean RandomForest) {
        this.RandomForest = RandomForest;
    }

    /**
     * @return the LinearRegression
     */
    public boolean isLinearRegression() {
        return LinearRegression;
    }

    /**
     * @param LinearRegression the LinearRegression to set
     */
    public void setLinearRegression(boolean LinearRegression) {
        this.LinearRegression = LinearRegression;
    }

    /**
     * @return the PaceRegression
     */
    public boolean isPaceRegression() {
        return PaceRegression;
    }

    /**
     * @param PaceRegression the PaceRegression to set
     */
    public void setPaceRegression(boolean PaceRegression) {
        this.PaceRegression = PaceRegression;
    }

    /**
     * @return the M5PRegTree
     */
    public boolean isM5PRegTree() {
        return M5PRegTree;
    }

    /**
     * @param M5PRegTree the M5PRegTree to set
     */
    public void setM5PRegTree(boolean M5PRegTree) {
        this.M5PRegTree = M5PRegTree;
    }

    /**
     * @return the M5PModelTree
     */
    public boolean isM5PModelTree() {
        return M5PModelTree;
    }

    /**
     * @param M5PModelTree the M5PModelTree to set
     */
    public void setM5PModelTree(boolean M5PModelTree) {
        this.M5PModelTree = M5PModelTree;
    }

    /**
     * @return the RBF
     */
    public boolean isRBF() {
        return RBF;
    }

    /**
     * @param RBF the RBF to set
     */
    public void setRBF(boolean RBF) {
        this.RBF = RBF;
    }

    /**
     * @return the RULE_EXTRACT_FROM_RF
     */
    public boolean isRULE_EXTRACT_FROM_RF() {
        return RULE_EXTRACT_FROM_RF;
    }

    /**
     * @param RULE_EXTRACT_FROM_RF the RULE_EXTRACT_FROM_RF to set
     */
    public void setRULE_EXTRACT_FROM_RF(boolean RULE_EXTRACT_FROM_RF) {
        this.RULE_EXTRACT_FROM_RF = RULE_EXTRACT_FROM_RF;
    }

    /**
     * @return the ORACLE_COACHING_TEST
     */
    public boolean isORACLE_COACHING_TEST() {
        return ORACLE_COACHING_TEST;
    }

    /**
     * @param ORACLE_COACHING_TEST the ORACLE_COACHING_TEST to set
     */
    public void setORACLE_COACHING_TEST(boolean ORACLE_COACHING_TEST) {
        this.ORACLE_COACHING_TEST = ORACLE_COACHING_TEST;
    }

    /**
     * @return the LAPLACE
     */
    public boolean isLAPLACE() {
        return LAPLACE;
    }

    /**
     * @param LAPLACE the LAPLACE to set
     */
    public void setLAPLACE(boolean LAPLACE) {
        this.LAPLACE = LAPLACE;
    }

    /**
     * @return the RULE_EXTRACTION_FROM_M5PBag
     */
    public boolean isRULE_EXTRACTION_FROM_M5PBag() {
        return RULE_EXTRACTION_FROM_M5PBag;
    }

    /**
     * @param RULE_EXTRACTION_FROM_M5PBag the RULE_EXTRACTION_FROM_M5PBag to set
     */
    public void setRULE_EXTRACTION_FROM_M5PBag(boolean RULE_EXTRACTION_FROM_M5PBag) {
        this.RULE_EXTRACTION_FROM_M5PBag = RULE_EXTRACTION_FROM_M5PBag;
    }

    /**
     * @return the M5PBag
     */
    public boolean isBaggedM5P() {
        return M5PBag;
    }

    /**
     * @param M5PBag the M5PBag to set
     */
    public void setBaggedM5P(boolean M5PBag) {
        this.M5PBag = M5PBag;
    }

    /**
     * @return the EXP_VAL_FOLDS
     */
    public boolean isEXP_VAL_FOLDS() {
        return EXP_VAL_FOLDS;
    }

    /**
     * @param EXP_VAL_FOLDS the EXP_VAL_FOLDS to set
     */
    public void setEXP_VAL_FOLDS(boolean EXP_VAL_FOLDS) {
        this.EXP_VAL_FOLDS = EXP_VAL_FOLDS;
    }

    /**
     * @return the FAST_SIMPLIFICATION
     */
    public boolean isFAST_SIMPLIFICATION() {
        return FAST_SIMPLIFICATION;
    }

    /**
     * @param FAST_SIMPLIFICATION the FAST_SIMPLIFICATION to set
     */
    public void setFAST_SIMPLIFICATION(boolean FAST_SIMPLIFICATION) {
        this.FAST_SIMPLIFICATION = FAST_SIMPLIFICATION;
    }

    /**
     * @return the REPORT_TRAINING
     */
    public boolean isREPORT_TRAINING() {
        return REPORT_TRAINING;
    }

    /**
     * @param REPORT_TRAINING the REPORT_TRAINING to set
     */
    public void setREPORT_TRAINING(boolean REPORT_TRAINING) {
        this.REPORT_TRAINING = REPORT_TRAINING;
    }

    /**
     * @return the R_MAE
     */
    public boolean isR_MAE() {
        return R_MAE;
    }

    /**
     * @param R_MAE the R_MAE to set
     */
    public void setR_MAE(boolean R_MAE) {
        this.R_MAE = R_MAE;
    }

    /**
     * @return the R_RMSE
     */
    public boolean isR_RMSE() {
        return R_RMSE;
    }

    /**
     * @param R_RMSE the R_RMSE to set
     */
    public void setR_RMSE(boolean R_RMSE) {
        this.R_RMSE = R_RMSE;
    }

    /**
     * @return the R_MAPE
     */
    public boolean isR_MAPE() {
        return R_MAPE;
    }

    /**
     * @param R_MAPE the R_MAPE to set
     */
    public void setR_MAPE(boolean R_MAPE) {
        this.R_MAPE = R_MAPE;
    }

    /**
     * @return the R_MUAPE
     */
    public boolean isR_MUAPE() {
        return R_MUAPE;
    }

    /**
     * @param R_MUAPE the R_MUAPE to set
     */
    public void setR_MUAPE(boolean R_MUAPE) {
        this.R_MUAPE = R_MUAPE;
    }

    /**
     * @return the R_LENGTH
     */
    public boolean isR_LENGTH() {
        return R_LENGTH;
    }

    /**
     * @param R_LENGTH the R_LENGTH to set
     */
    public void setR_LENGTH(boolean R_LENGTH) {
        this.R_LENGTH = R_LENGTH;
    }

    /**
     * @return the R_ACC
     */
    public boolean isR_ACC() {
        return R_ACC;
    }

    /**
     * @param R_ACC the R_ACC to set
     */
    public void setR_ACC(boolean R_ACC) {
        this.R_ACC = R_ACC;
    }

    /**
     * @return the R_AUC
     */
    public boolean isR_AUC() {
        return R_AUC;
    }

    /**
     * @param R_AUC the R_AUC to set
     */
    public void setR_AUC(boolean R_AUC) {
        this.R_AUC = R_AUC;
    }

    /**
     * @return the R_BRI
     */
    public boolean isR_BRI() {
        return R_BRI;
    }

    /**
     * @param R_BRI the R_BRI to set
     */
    public void setR_BRI(boolean R_BRI) {
        this.R_BRI = R_BRI;
    }

    /**
     * @return the R_BRE
     */
    public boolean isR_BRE() {
        return R_BRE;
    }

    /**
     * @param R_BRE the R_BRE to set
     */
    public void setR_BRE(boolean R_BRE) {
        this.R_BRE = R_BRE;
    }

    /**
     * @return the R_CORR
     */
    public boolean isR_CORR() {
        return R_CORR;
    }

    /**
     * @param R_CORR the R_CORR to set
     */
    public void setR_CORR(boolean R_CORR) {
        this.R_CORR = R_CORR;
    }

    /**
     * @return the CUSTOM_METRICS
     */
    public String getCUSTOM_METRICS() {
        return CUSTOM_METRICS;
    }

    /**
     * @param CUSTOM_METRICS the CUSTOM_METRICS to set
     */
    public void setCUSTOM_METRICS(String CUSTOM_METRICS) {
        this.CUSTOM_METRICS = CUSTOM_METRICS;
    }

    /**
     * @return the CUSTOM_REG_METRICS
     */
    public String getCUSTOM_REG_METRICS() {
        return CUSTOM_REG_METRICS;
    }

    /**
     * @param CUSTOM_REG_METRICS the CUSTOM_REG_METRICS to set
     */
    public void setCUSTOM_REG_METRICS(String CUSTOM_REG_METRICS) {
        this.CUSTOM_REG_METRICS = CUSTOM_REG_METRICS;
    }

    /**
     * @return the BaggingJ48
     */
    public boolean isBaggingJ48() {
        return BaggingJ48;
    }

    /**
     * @param BaggingJ48 the BaggingJ48 to set
     */
    public void setBaggingJ48(boolean BaggingJ48) {
        this.BaggingJ48 = BaggingJ48;
    }

    /**
     * @return the PREDICTOR_CLASS
     */
}
